home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 May / CHIP Turkiye Mayıs 1998.iso / grafik / ps4try.exe / PS4TRY / DISK3 / DATA.3 / plugins / Formats / EPSParsr.8by / POST / %PSINIT < prev   
Text File  |  1996-10-16  |  20KB  |  549 lines

  1. % InterpreterInit.ps
  2. %
  3. % This file initializes the interpreter to its startup state.
  4. % On entry, systemdict and userdict are both writable and on the dict stack.
  5. % systemdict has all built-in operators defined, and userdict is empty.
  6. %
  7. % AUTHOR
  8. %    Sam L. Weiss
  9. %    
  10. % MODIFICATION HISTORY
  11. %    02/15/96        Sam Weiss        Release 1.0
  12.     
  13.  
  14.  
  15. % initialize systemdict
  16.  
  17.  
  18. systemdict begin
  19.  
  20.     /version (47.0) def
  21.     
  22.     /=string {userdict /=string known not {userdict /=string 128 string put} if userdict /=string get} bind def
  23.     /=print {dup type /stringtype ne {=string cvs} if print} bind def
  24.     /= {//=print exec (\n) print} bind def
  25.     /stack {0 1 count 3 sub {index =} for} bind def
  26.     /pstack {0 1 count 3 sub {index ==} for} bind def
  27.     /prompt {(PS>) print flush} bind def
  28.     /Run {dup == flush run} bind def
  29.     
  30.     
  31.     % create and initialize $error dictionary
  32.  
  33.  
  34.     20 dict dup begin
  35.         /newerror false def
  36.         /errorname null def
  37.         /command null def
  38.         /errorinfo null def
  39.         /ostack null def
  40.         /estack null def
  41.         /dstack null def
  42.         /recordstacks false def
  43.         /binary false def
  44.         /ostackarray null def
  45.         /estackarray null def
  46.         /dstackarray null def
  47.         /initializing true def
  48.         /inerror false def
  49.     end /$error exch def
  50.     
  51.     
  52.     % define .error procedure, which is referenced by each default error handler
  53.  
  54.  
  55.     /.error {
  56.         //$error /setshared known {false setshared} if
  57.         //$error /inerror get {pop pop stop} if        % disallow re-entry
  58.         //$error /inerror true put                            % guard against re-entry
  59.         //$error exch /errorname exch put                % load error name
  60.         //$error exch /command exch put                    % load offending command
  61.         //$error /newerror true put                         % flag new error
  62.     
  63.         % if the offending command is a string with length > 128
  64.         % then cap the length
  65.     
  66.         //$error /command get type /stringtype eq {    % is command a string?
  67.             //$error /command get length 128 gt {        % is the string length > 128
  68.                 //$error /command get                        % get string
  69.                 0 128 getinterval                                % get subinterval
  70.                 //$error exch /command exch put            % store it back in $error
  71.             } if
  72.         } if
  73.         
  74.         % if recording stacks and this isn't a VM error...
  75.     
  76.         //$error /recordstacks get //$error /errorname get /VMerror ne and {
  77.         
  78.             //$error /ostackarray get null eq {            % if there is no snapshot of operand stack
  79.                 //$error /estackarray 250 array put        % allocate a snapshot of exec stack
  80.                 //$error /ostackarray 500 array put        % allocate a snapshot of operand stack
  81.                 //$error /dstackarray 20 array put        % allocate a snapshot of dictionary stack
  82.             } if
  83.             
  84.             count                                            % count operand stack
  85.             //$error /ostackarray get
  86.             exch 0 exch    getinterval                    % get subinterval big enough for operand stack snapshot
  87.             //$error exch /ostack exch put        % store subinterval in $error named ostack
  88.             
  89.             % copy operand stack into ostack array
  90.             
  91.             count 1 sub -1 0 {                    % for (i = count - 1; i >= 0; --i)
  92.                 //$error /ostack get exch
  93.                 2 index put
  94.                 count 1 roll
  95.             } for
  96.             
  97.             % copy dictionary stack into dstackarray and associate with dstack in //$error
  98.             
  99.             //$error /dstack
  100.                 //$error /dstackarray get dictstack
  101.             put
  102.             
  103.             % copy execution stack into estackarray and associate with estack in $error
  104.             % we don't copy the top element on the execution stack (since it is this
  105.             % error handler itself)
  106.             
  107.             //$error /estack
  108.                 //$error /estackarray get execstack
  109.                 dup length 2 sub 0 exch getinterval
  110.             put
  111.             
  112.         } if    % recording stacks and not a VM error
  113.         
  114.         % if the interpreter encouters an error while initializing,
  115.         % the server loop may not yet be running, so we invoke handleerror ourselves
  116.         
  117.         //$error /initializing get {handleerror} if
  118.         //$error /inerror false put
  119.         stop
  120.         
  121.     } bind def
  122.     
  123.     
  124.     % create and initalize errordict
  125.     
  126.     
  127.     32 dict dup begin
  128.         /configurationerr {/configurationerr //.error exec} bind def
  129.         /dictfull {/dictfull //.error exec} bind def
  130.         /dictstackoverflow {/dictstackoverflow //.error exec} bind def
  131.         /dictstackunderflow {/dictstackunderflow //.error exec} bind def
  132.         /execstackoverflow {/execstackoverflow //.error exec} bind def
  133.         /interrupt {/interrupt /interrupt //.error exec} bind def
  134.         /invalidaccess {/invalidaccess //.error exec} bind def
  135.         /invalidcontext {/invalidcontext //.error exec} bind def
  136.         /invalidexit {/invalidexit //.error exec} bind def
  137.         /invalidfileaccess {/invalidfileaccess //.error exec} bind def
  138.         /invalidfont {/invalidfont //.error exec} bind def
  139.         /invalidid {/invalidid //.error exec} bind def
  140.         /invalidrestore {/invalidrestore //.error exec} bind def
  141.         /ioerror {/ioerror //.error exec} bind def
  142.         /limitcheck {/limitcheck //.error exec} bind def
  143.         /nocurrentpoint {/nocurrentpoint //.error exec} bind def
  144.         /rangecheck {/rangecheck //.error exec} bind def
  145.         /stackoverflow {/stackoverflow //.error exec} bind def
  146.         /stackunderflow {/stackunderflow //.error exec} bind def
  147.         /syntaxerror {/syntaxerror //.error exec} bind def
  148.         /timeout {/timeout /timeout //.error exec} bind def
  149.         /typecheck {/typecheck //.error exec} bind def
  150.         /undefined {/undefined //.error exec} bind def
  151.         /undefinedfilename {/undefinedfilename //.error exec} bind def
  152.         /undefinedresource {/undefinedresource //.error exec} bind def
  153.         /undefinedresult {/undefinedresult //.error exec} bind def
  154.         /unmatchedmark {/unmatchedmark //.error exec} bind def
  155.         /unregistered {/unregistered //.error exec} bind def
  156.         /VMerror {/VMerror //.error exec} bind def
  157.     
  158.         /handleerror {
  159.             //$error begin
  160.                 /inerror false def
  161.                 newerror {
  162.                     /newerror false def 
  163.                     (%%[ Error: ) print
  164.                     errorname //=print exec 
  165.                     (; OffendingCommand: ) print
  166.                     /command load //=print exec 
  167.                     //$error /errorinfo known {
  168.                         errorinfo type /arraytype eq {
  169.                             (; ErrorInfo:) print
  170.                             0 1 errorinfo length dup 2 gt {pop 2} if 1 sub
  171.                             {( ) print errorinfo exch get //=print exec} for
  172.                             /errorinfo //null def
  173.                         } if
  174.                     } if
  175.                     ( ]%%\n) print
  176.                     flush
  177.                 } if
  178.             end
  179.         } bind def
  180.     end /errordict exch def
  181.  
  182.     
  183.     % define systemdict version of handleerror
  184.     
  185.     
  186.     /handleerror {//errordict /handleerror get exec} bind def
  187.     
  188.     
  189.     % create and initalize statusdict
  190.  
  191.  
  192.     25 dict dup begin
  193.         /pagecount {1} def
  194.         /setpagestackorder {pop} def
  195.         /pagestackorder {false} def
  196.         /setprintername {pop} bind def 
  197.         /printername {product exch copy} bind def 
  198.         /setdostartpage {pop} bind def
  199.         /dostartpage {false} def
  200.         /setmargins {pop pop} bind def
  201.         /margins {0 0} def 
  202.         /setdefaulttimeouts {pop pop pop} bind def
  203.         /defaulttimeouts {0 60 30} def
  204.         /setjobtimeout {pop} def 
  205.         /jobtimeout {0} def 
  206.         /manualfeedtimeout 60 def
  207.         /waittimeout cvx 300 def
  208.         /manualfeed false def
  209.         /jobstate () def
  210.         /jobname cvx () def
  211.         /product cvx (Nessie) readonly def
  212.         /revision cvx 0 def
  213.         /processcolors {4} def
  214.         /lettertray {} def
  215.         /legaltray {} def
  216.         /a4tray {} def
  217.         /b5tray {} def
  218.         /papertray {0} def
  219.         /setpapertray {pop} bind def
  220.         /defaultpapertray {0} def
  221.         /setdefaultpapertray {pop} bind def
  222.         /papersize {/lettertray true} def
  223.     end /statusdict exch def
  224.     
  225.     
  226.     % initalize serverdict
  227.     
  228.     
  229.     10 dict dup /serverdict exch def begin
  230.         /stdin null def
  231.         /stdout null def
  232.         /inserver true def
  233.         /settimeouts {} def
  234.         
  235.         /execjob {
  236.         
  237.             //statusdict begin
  238.                 /jobstate (idle) def
  239.                 /jobname () def
  240.             end
  241.             
  242.             //$error /doclose true put
  243.             //systemdict /execdict get /quitflag false put
  244.             clear
  245.             cleardictstack
  246.             
  247.             //serverdict /enableinterrupt get exec
  248.             //serverdict /stdin get stopped
  249.             //serverdict /disableinterrupt get exec
  250.             
  251.             % if error executing stdin...
  252.             
  253.             {
  254.                 {
  255.                     //$error newerror get {
  256.                         //errordict /handlerror get exec
  257.                     } if
  258.                 
  259.                     //serverdict begin
  260.                         stdin status doclose and {
  261.                             (%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%)
  262.                             = flush
  263.                             stdin flushfile
  264.                         } if
  265.                     end % serverdict
  266.                 } stopped
  267.                 {
  268.                     //serverdict /stdin get resetfile
  269.                     //serverdict /stdout get resetfile
  270.                     //$error /doclose true put
  271.                 } if % stopped
  272.             } if % stopped
  273.             
  274.             //$error /doclose get {
  275.                 {//serverdict /stdout get closefile} stopped
  276.                 {//serverdict /stdin get closefile} stopped
  277.             } if
  278.             
  279.             clear
  280.             cleardictstack
  281.             initgraphics
  282.             erasepage
  283.             
  284.         }  bind executeonly def
  285.  
  286.         /server {
  287.             {
  288.                 //serverdict begin
  289.                     save /serverstate exch def
  290.                         {jobavailable {exit} if} loop 
  291.                         beginjob
  292.                             /stdin (%stdin) (r) file cvx def
  293.                             /stdout (%stdout) (w) file def
  294.                             execjob
  295.                         //serverdict endjob get exec
  296.                     //serverdict /serverstate get restore
  297.             } loop
  298.         } bind executeonly def
  299.  
  300.         /exitserver {
  301.             clear
  302.             cleardictstack
  303.             initgraphics
  304.             erasepage
  305.         } bind executeonly def
  306.         
  307.         currentdict readonly pop    % make serverdict read-only
  308.     end
  309.     
  310.     
  311.     % create and initalize execdict
  312.  
  313.  
  314.     10 dict dup begin
  315.         /execdepth 0 def
  316.         /binary false def
  317.         /quitflag false def
  318.         /stmtfile 0 def
  319.         /setstreams {} def
  320.         /idleproc {/idleproc {} def //serverdict begin 0 0 settimeouts end} bind def
  321.         /copyright (Copyright (c) 1984-1995 Adobe Systems Incorporated.\nTypefaces Copyright (c) 1981 Linotype AG and/or its subsidiaries.\nAll Rights Reserved.) def
  322.         /banner {//currentdict begin (PostScript(r) Version ) print version print (\n) print copyright print end} bind def
  323.         /nestprompt {(PS) print execdepth {(>) print} repeat flush} bind def
  324.         /checkquit {quitflag {exit} if} bind def
  325.     end /execdict exch def
  326.         
  327.  
  328.     % create and initalize FontDirectory
  329.  
  330.  
  331.     /FontDirectory 40 dict readonly def
  332.     
  333.  
  334.     % define findfont procedure
  335.     
  336.     
  337.     /findfont {
  338.         //systemdict /FontDirectory get exch
  339.         2 copy known
  340.         {get} 
  341.         {
  342.             exch pop {platformfindfont} stopped
  343.             {pop //$error /command /findfont put stop} if
  344.         }
  345.         ifelse
  346.     } bind def
  347.     
  348.     
  349.     % define start procedure
  350.     
  351.     
  352.     /start {
  353.         //serverdict begin 
  354.             disableinterrupt 
  355.             setstreams 
  356.         
  357.             //$error begin 
  358.                 /initializing false def
  359.                 /binary false def
  360.                 /recordstacks true def
  361.             end 
  362.             
  363.     %        //productinit
  364.         cleardictstack
  365.         //serverdict /server get exec
  366.     } bind def
  367.     
  368.     
  369.     % define StandardEncoding
  370.     
  371.     
  372.     /StandardEncoding [
  373.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  374.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  375.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  376.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  377.       /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
  378.       /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
  379.       /zero /one /two /three /four /five /six /seven
  380.       /eight /nine /colon /semicolon /less /equal /greater /question
  381.       /at /A /B /C /D /E /F /G
  382.       /H /I /J /K /L /M /N /O
  383.       /P /Q /R /S /T /U /V /W
  384.       /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
  385.       /quoteleft /a /b /c /d /e /f /g
  386.       /h /i /j /k /l /m /n /o
  387.       /p /q /r /s /t /u /v /w
  388.       /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
  389.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  390.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  391.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  392.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  393.       /.notdef /exclamdown /cent /sterling /fraction /yen /florin /section
  394.       /currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl
  395.       /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet
  396.       /quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /questiondown
  397.       /.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent
  398.       /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
  399.       /emdash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  400.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  401.       /.notdef /AE /.notdef /ordfeminine /.notdef /.notdef /.notdef /.notdef
  402.       /Lslash /Oslash /OE /ordmasculine /.notdef /.notdef /.notdef /.notdef
  403.       /.notdef /ae /.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef
  404.       /lslash /oslash /oe /germandbls /.notdef /.notdef /.notdef /.notdef
  405.     ] readonly def
  406.     
  407.     
  408.     % define ISOLatin1Encoding
  409.     
  410.     
  411.     /ISOLatin1Encoding [
  412.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  413.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  414.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  415.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  416.       /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
  417.       /parenleft /parenright /asterisk /plus /comma /minus /period /slash
  418.       /zero /one /two /three /four /five /six /seven
  419.       /eight /nine /colon /semicolon /less /equal /greater /question
  420.       /at /A /B /C /D /E /F /G
  421.       /H /I /J /K /L /M /N /O
  422.       /P /Q /R /S /T /U /V /W
  423.       /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
  424.       /quoteleft /a /b /c /d /e /f /g
  425.       /h /i /j /k /l /m /n /o
  426.       /p /q /r /s /t /u /v /w
  427.       /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
  428.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  429.       /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  430.       /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
  431.       /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
  432.       /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
  433.       /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
  434.       /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
  435.       /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
  436.       /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
  437.       /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
  438.       /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
  439.       /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
  440.       /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
  441.       /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
  442.       /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
  443.       /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
  444.     ] readonly def
  445.  
  446.  
  447.     % define Symbol font
  448.     
  449.     
  450.     [
  451.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  452.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  453.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  454.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  455.         /space /exclam /universal /numbersign /existential /percent /ampersand /suchthat
  456.         /parenleft /parenright /asteriskmath /plus /comma /minus /period /slash
  457.         /zero /one /two /three /four /five /six /seven
  458.         /eight /nine /colon /semicolon /less /equal /greater /question
  459.         /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma
  460.         /Eta /Iota /theta1 /Kappa /Lambda /Mu /Nu /Omicron
  461.         /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega
  462.         /Xi /Psi /Zeta /bracketleft /therefore /bracketright /perpendicular /underscore
  463.         /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma
  464.         /eta /iota /phi1 /kappa /lambda /mu /nu /omicron
  465.         /pi /theta /rho /sigma /tau /upsilon /omega1 /omega
  466.         /xi /psi /zeta /braceleft /bar /braceright /similar /.notdef
  467.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  468.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  469.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  470.         /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  471.         /.notdef /Upsilon1 /minute /lessequal /fraction /infinity /florin /club
  472.         /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown
  473.         /degree /plusminus /second /greaterequal /multiply /proportional /partialdiff /bullet
  474.         /divide /notequal /equivalence /approxequal /ellipsis /arrowvertex /arrowhorizex /carriagereturn
  475.         /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus /emptyset /intersection
  476.         /union /propersuperset /reflexsuperset /notsubset /propersubset /reflexsubset /element /notelement
  477.         /angle /gradient /registerserif /copyrightserif /trademarkserif /product /radical /dotmath
  478.         /logicalnot /logicaland /logicalor /arrowdblboth /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown
  479.         /lozenge /angleleft /registersans /copyrightsans /trademarksans /summation /parenlefttp /parenleftex
  480.         /parenleftbt /bracketlefttp /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt /braceex
  481.         /apple /angleright /integral /integraltp /integralex /integralbt /parenrighttp /parenrightex
  482.         /parenrightbt /bracketrighttp /bracketrightex /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef
  483.     ] readonly
  484.     
  485.     9 dict begin
  486.         /Encoding exch def
  487.         /FontType 1 def
  488.         /FontMatrix [.001 0 0 .001 0 0] def
  489.         /FontBBox {0 0 1000 1000} def
  490.         /FontInfo 2 dict dup begin
  491.             /UnderlinePosition -100 def
  492.             /UnderlineThickness 50 def
  493.         end def
  494.         /FontName /Symbol def
  495.         /PaintType 0 def
  496.         /Private 5 dict noaccess def
  497.         /CharStrings 256 dict dup begin Encoding {() def} forall end def
  498.         FontName currentdict definefont pop
  499.     end
  500.  
  501.  
  502.     % define == procedure
  503.     
  504.  
  505.     20 dict begin
  506.         /==dict currentdict def
  507.         /supplws false def
  508.         /cp 5 def
  509.         /rmargin 68 def
  510.         /cprint {dup length cp add /cp exch def print} bind def
  511.         /bprint {dup length cp add rmargin gt {(\n) print /cp 0 def /supplws false def} {supplws {/supplws false def} {( ) cprint} ifelse} ifelse} bind def
  512.         /tprint {bprint cprint} bind def
  513.         /typeprint {type =string cvs (type) search pop bprint (-) cprint cprint (-) cprint pop pop} bind def
  514.         /typeexec {dup type dup currentdict exch known {exec} {pop typeprint} ifelse} def
  515.         /substrprint {{{(\() (\)) (\\)} {search {substrprint (\\) cprint cprint true exit} if} forall dup type /stringtype eq {cprint exit} if pop} loop} bind def
  516.         /booleantype {=string cvs tprint} bind def
  517.         /integertype //booleantype def
  518.         /realtype //booleantype def
  519.         /arraytype {dup rcheck {(          ) bprint pop /supplws true def dup xcheck {({) cprint {typeexec} forall (}) cprint} {([) cprint {typeexec} forall (]) cprint} ifelse /supplws false def} {typeprint} ifelse} bind def
  520.         /packedarraytype //arraytype def
  521.         /operatortype {=string cvs bprint (--) cprint cprint (--) cprint} bind def
  522.         /stringtype {dup rcheck {dup length 200 gt exch 1 index {0 200 getinterval} if bprint (\() cprint substrprint {(...) cprint} if (\)) cprint} {typeprint} ifelse} bind def
  523.         /nametype {bprint dup xcheck not {(/) cprint} if =string cvs cprint} bind def
  524.         systemdict /== {//==dict begin mark {1 index /cp 0 def /supplws true def typeexec (\n) print} stopped {cleartomark end //$error /command /== put stop} if pop pop end} bind put
  525.     end % ==dict
  526.     
  527.     currentdict readonly pop    % make systemdict read-only
  528.  
  529. end % systemdict
  530.  
  531.  
  532. % initialize userdict
  533.  
  534.  
  535. /#copies 1 def
  536. /letter {} def
  537. /note {} def
  538. /legal {} def
  539. /a4 {} def
  540. /b5 {} def
  541. /lettersmall {} def
  542. /a4small {} def
  543.  
  544. /quit {//execdict /quitflag true put stop} bind def
  545.  
  546. /Courier findfont 9 scalefont setfont
  547.  
  548. $error /initializing false put
  549.